package com.wdh.networklibrary.base;

import android.app.Activity;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import com.erongdu.wireless.tools.log.Logger;
import com.wdh.networklibrary.utils.Constant;
import com.wdh.networklibrary.utils.NightModeActivityManager;
import com.wdh.networklibrary.utils.SharedInfo;
import java.util.List;
import me.jessyan.autosize.internal.CustomAdapt;

/**
 * Lifecycle ->AppCompatActivity26.1.0以下，那么你需要自实现LifecycleOwner接口
 */
public class BaseActivity extends AppCompatActivity implements CustomAdapt {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 直接调用getLifecycle()，添加Observer
        getLifecycle().addObserver(new Java8Observer());
        // notchInit();
    }




    private void notchInit() {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {//9.0留海适配
//            WindowManager.LayoutParams lp = getWindow().getAttributes();
//            lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;//不绘制留海
//            getWindow().setAttributes(lp);
//            fullScreen(this);//透明状态栏
//        } else {
        if (Constant.isNotch) {//留海屏不用透明状态栏
            Logger.d("toast", "留海屏");
        } else {
            fullScreen(this);//透明状态栏
        }
//        }
    }

//    public static int getStatusBarHeight(Context context) {//小米获取留海高度
//        int statusBarHeight = 0;
//        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
//        if (resourceId > 0) {
//            statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
//        }
//        return statusBarHeight;
//    }

    private void fullScreen(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                //5.x开始需要把颜色设置透明，否则导航栏会呈现系统默认的浅灰色
                Window window = activity.getWindow();
                View decorView = window.getDecorView();
                //两个 flag 要结合使用，表示让应用的主体内容占用系统状态栏的空间
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                window.setStatusBarColor(Color.TRANSPARENT);
                //导航栏颜色也可以正常设置
                window.setNavigationBarColor(Color.TRANSPARENT);
            } else {
                Window window = activity.getWindow();
                WindowManager.LayoutParams attributes = window.getAttributes();
                int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
                int flagTranslucentNavigation = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
                attributes.flags |= flagTranslucentStatus;
                attributes.flags |= flagTranslucentNavigation;
                window.setAttributes(attributes);
            }
        }
    }


    public void toggleNightModeForAllActivities(@AppCompatDelegate.NightMode int mode) {//日夜模式全部切换
        List<BaseActivity> list = NightModeActivityManager.getInstance().getActivityList();
        if (list != null && list.size() > 0) {
            for (BaseActivity activity : list) {
                activity.toggleGlobalNightMode(mode);
            }
        }
    }

    protected void toggleGlobalNightMode(@AppCompatDelegate.NightMode int mode) {
        SharedInfo.getInstance().saveValue(Constant.isNight, mode);
        AppCompatDelegate.setDefaultNightMode(mode);
        recreate();
    }

//    protected void toggleLocalNightMode(@AppCompatDelegate.NightMode int mode) {//日夜模式只切换本页
//        getDelegate().setLocalNightMode(mode);
//        recreate();
//    }


//    //日夜模式
//    public void useNightMode(boolean isNight) {
//        if (isNight) {
//            AppCompatDelegate.setDefaultNightMode(
//                    AppCompatDelegate.MODE_NIGHT_YES);
//        } else {
//            AppCompatDelegate.setDefaultNightMode(
//                    AppCompatDelegate.MODE_NIGHT_NO);
//        }
//        recreate();
//    }

    /**
     * 是否按照宽度进行等比例适配 (为了保证在高宽比不同的屏幕上也能正常适配, 所以只能在宽度和高度之中选择一个作为基准进行适配)
     *
     * @return {@code true} 为按照宽度进行适配, {@code false} 为按照高度进行适配
     */
    @Override
    public boolean isBaseOnWidth() {
        return false;
    }

    /**
     * 这里使用 iPhone 的设计图, iPhone 的设计图尺寸为 750px * 1334px, 高换算成 dp 为 667 (1334px / 2 = 667dp)
     * <p>
     * 返回设计图上的设计尺寸, 单位 dp
     * { #getSizeInDp} 须配合 {@link #isBaseOnWidth()} 使用, 规则如下:
     * 如果 {@link #isBaseOnWidth()} 返回 {@code true}, { #getSizeInDp} 则应该返回设计图的总宽度
     * 如果 {@link #isBaseOnWidth()} 返回 {@code false}, { #getSizeInDp} 则应该返回设计图的总高度
     * 如果您不需要自定义设计图上的设计尺寸, 想继续使用在 AndroidManifest 中填写的设计图尺寸, { #getSizeInDp} 则返回 {@code 0}
     *
     * @return 设计图上的设计尺寸, 单位 dp
     */
    @Override
    public float getSizeInDp() {
        return 667;
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}
